{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "url_univlab= 'https://raw.githubusercontent.com/irenekarijadi/RF-LSTM-CEEMDAN/main/Dataset/data%20of%20UnivLab_Christy.csv'\n",
    "univlab= pd.read_csv(url_univlab)\n",
    "data_univlab= univlab[(univlab['timestamp'] > '2015-03-01') & (univlab['timestamp'] < '2015-06-01')]\n",
    "dfs_univlab=data_univlab['energy']\n",
    "datas_univlab=pd.DataFrame(dfs_univlab)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## import libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import warnings\n",
    "\n",
    "if not sys.warnoptions:\n",
    "    warnings.simplefilter('ignore')\n",
    "\n",
    "from PyEMD import CEEMDAN\n",
    "import numpy\n",
    "import math\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "from sklearn import metrics\n",
    "\n",
    "import time\n",
    "import dataframe_image as dfi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import all functions from another notebook for building prediction methods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import Setting\n",
    "from myfunctions import lr_model,svr_model,ann_model,rf_model,lstm_model,hybrid_ceemdan_rf,hybrid_ceemdan_lstm,proposed_method"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import parameter settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "hours=Setting.n_hours\n",
    "data_partition=Setting.data_partition\n",
    "max_features=Setting.max_features\n",
    "epoch=Setting.epoch\n",
    "batch_size=Setting.batch_size\n",
    "neuron=Setting.neuron\n",
    "lr=Setting.lr\n",
    "optimizer=Setting.optimizer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run the experiments\n",
    "### Run this following cell will train and test the proposed method and other benchmark methods on University Laboratory Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--- 0.23638319969177246 seconds - Linear Regression- univlab ---\n",
      "--- 0.37601685523986816 seconds - Support Vector Regression- univlab ---\n",
      "--- 1.5343713760375977 seconds - ANN- univlab ---\n",
      "--- 1.1199922561645508 seconds - Random Forest- univlab ---\n",
      "--- 6.68122673034668 seconds - lstm- univlab ---\n",
      "--- 31.26933741569519 seconds - ceemdan_rf- univlab ---\n",
      "--- 86.68152022361755 seconds - ceemdan_lstm- univlab ---\n",
      "--- 75.80700922012329 seconds - proposed_method- univlab ---\n"
     ]
    }
   ],
   "source": [
    "#Linear Regression\n",
    "\n",
    "start_time = time.time()\n",
    "lr_univlab=lr_model(datas_univlab,hours,data_partition)\n",
    "lr_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - Linear Regression- univlab ---\" % (lr_time_univlab))\n",
    "\n",
    "#Support Vector Regression\n",
    "start_time = time.time()\n",
    "svr_univlab=svr_model(datas_univlab,hours,data_partition)\n",
    "svr_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - Support Vector Regression- univlab ---\" % (svr_time_univlab))\n",
    "\n",
    "\n",
    "#ANN\n",
    "start_time = time.time()\n",
    "ann_univlab=ann_model(datas_univlab,hours,data_partition)\n",
    "ann_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - ANN- univlab ---\" % (ann_time_univlab))\n",
    "\n",
    "#random forest\n",
    "start_time = time.time()\n",
    "rf_univlab=rf_model(datas_univlab,hours,data_partition,max_features)\n",
    "rf_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - Random Forest- univlab ---\" % (rf_time_univlab))\n",
    "\n",
    "#LSTM\n",
    "start_time = time.time()\n",
    "lstm_univlab=lstm_model(datas_univlab,hours,data_partition,max_features,epoch,batch_size,neuron,lr,optimizer)\n",
    "lstm_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - lstm- univlab ---\" % (lstm_time_univlab))\n",
    "\n",
    "\n",
    "#CEEMDAN RF\n",
    "start_time = time.time()\n",
    "ceemdan_rf_univlab=hybrid_ceemdan_rf(dfs_univlab,hours,data_partition,max_features)\n",
    "ceemdan_rf_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - ceemdan_rf- univlab ---\" % (ceemdan_rf_time_univlab))\n",
    "\n",
    "#CEEMDAN LSTM\n",
    "start_time = time.time()\n",
    "ceemdan_lstm_univlab=hybrid_ceemdan_lstm(dfs_univlab,hours,data_partition,max_features,epoch,batch_size,neuron,lr,optimizer)\n",
    "ceemdan_lstm_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - ceemdan_lstm- univlab ---\" % (ceemdan_lstm_time_univlab))\n",
    "\n",
    "\n",
    "#proposed method\n",
    "start_time = time.time()\n",
    "proposed_method_univlab=proposed_method(dfs_univlab,hours,data_partition,max_features,epoch,batch_size,neuron,lr,optimizer)\n",
    "proposed_method_time_univlab=time.time() - start_time\n",
    "print(\"--- %s seconds - proposed_method- univlab ---\" % (proposed_method_time_univlab))\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summarize of experimental results with running time\n",
    "### Run this following cell will summarize the result and generate output used in Section 4.4 (Table 3) for University Laboratory dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>LR</th>\n",
       "      <th>SVR</th>\n",
       "      <th>ANN</th>\n",
       "      <th>RF</th>\n",
       "      <th>LSTM</th>\n",
       "      <th>CEEMDAN RF</th>\n",
       "      <th>CEEMDAN LSTM</th>\n",
       "      <th>Proposed Method</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>university laboratory results</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>MAPE(%)</th>\n",
       "      <td>5.858858</td>\n",
       "      <td>6.419207</td>\n",
       "      <td>6.134858</td>\n",
       "      <td>6.273420</td>\n",
       "      <td>6.385431</td>\n",
       "      <td>3.566265</td>\n",
       "      <td>3.509094</td>\n",
       "      <td>3.190548</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RMSE</th>\n",
       "      <td>2.579903</td>\n",
       "      <td>2.706899</td>\n",
       "      <td>2.658628</td>\n",
       "      <td>2.715355</td>\n",
       "      <td>2.627445</td>\n",
       "      <td>1.466240</td>\n",
       "      <td>1.429140</td>\n",
       "      <td>1.293451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MAE</th>\n",
       "      <td>1.864822</td>\n",
       "      <td>2.093199</td>\n",
       "      <td>2.004848</td>\n",
       "      <td>2.045536</td>\n",
       "      <td>2.063418</td>\n",
       "      <td>1.131705</td>\n",
       "      <td>1.115774</td>\n",
       "      <td>1.014384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>running time (s)</th>\n",
       "      <td>0.236383</td>\n",
       "      <td>0.376017</td>\n",
       "      <td>1.534371</td>\n",
       "      <td>1.119992</td>\n",
       "      <td>6.681227</td>\n",
       "      <td>31.269337</td>\n",
       "      <td>86.681520</td>\n",
       "      <td>75.807009</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     LR       SVR       ANN        RF  \\\n",
       "university laboratory results                                           \n",
       "MAPE(%)                        5.858858  6.419207  6.134858  6.273420   \n",
       "RMSE                           2.579903  2.706899  2.658628  2.715355   \n",
       "MAE                            1.864822  2.093199  2.004848  2.045536   \n",
       "running time (s)               0.236383  0.376017  1.534371  1.119992   \n",
       "\n",
       "                                   LSTM  CEEMDAN RF  CEEMDAN LSTM  \\\n",
       "university laboratory results                                       \n",
       "MAPE(%)                        6.385431    3.566265      3.509094   \n",
       "RMSE                           2.627445    1.466240      1.429140   \n",
       "MAE                            2.063418    1.131705      1.115774   \n",
       "running time (s)               6.681227   31.269337     86.681520   \n",
       "\n",
       "                               Proposed Method  \n",
       "university laboratory results                   \n",
       "MAPE(%)                               3.190548  \n",
       "RMSE                                  1.293451  \n",
       "MAE                                   1.014384  \n",
       "running time (s)                     75.807009  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "running_time_univlab=pd.DataFrame([lr_time_univlab,svr_time_univlab,ann_time_univlab,\n",
    "                                   rf_time_univlab,lstm_time_univlab,ceemdan_rf_time_univlab,\n",
    "                                   ceemdan_lstm_time_univlab,proposed_method_time_univlab])\n",
    "running_time_univlab=running_time_univlab.T\n",
    "running_time_univlab.columns=['LR','SVR','ANN','RF','LSTM','CEEMDAN RF','CEEMDAN LSTM','Proposed Method']\n",
    "\n",
    "proposed_method_univlab_df=proposed_method_univlab[0:3]\n",
    "result_univlab=pd.DataFrame([lr_univlab,svr_univlab,ann_univlab,rf_univlab,lstm_univlab,ceemdan_rf_univlab,\n",
    "                    ceemdan_lstm_univlab,proposed_method_univlab_df])\n",
    "result_univlab=result_univlab.T\n",
    "result_univlab.columns=['LR','SVR','ANN','RF','LSTM','CEEMDAN RF','CEEMDAN LSTM','Proposed Method']\n",
    "univlab_summary=pd.concat([result_univlab,running_time_univlab],axis=0)\n",
    "\n",
    "univlab_summary.set_axis(['MAPE(%)', 'RMSE','MAE','running time (s)'], axis='index')\n",
    "\n",
    "univlab_summary.style.set_caption(\"University Laboratory Results\")\n",
    "index = univlab_summary.index\n",
    "index.name = \"university laboratory results\"\n",
    "univlab_summary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#export table to png\n",
    "#dfi.export(univlab_summary,\"univlab_summary_table.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculate percentage improvement\n",
    "### Run this following cell will calculate percentage improvement and generate output used in Section 4.4 (Table 4) for University Laboratory dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Proposed Method vs.LR</th>\n",
       "      <th>Proposed Method vs.SVR</th>\n",
       "      <th>Proposed Method vs.ANN</th>\n",
       "      <th>Proposed Method vs.RF</th>\n",
       "      <th>Proposed Method vs.LSTM</th>\n",
       "      <th>Proposed Method vs.CEEMDAN RF</th>\n",
       "      <th>Proposed Method vs. CEEMDAN LSTM</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Percentage Improvement university laboratory</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>MAPE(%)</th>\n",
       "      <td>45.54</td>\n",
       "      <td>50.30</td>\n",
       "      <td>47.99</td>\n",
       "      <td>49.14</td>\n",
       "      <td>50.03</td>\n",
       "      <td>10.54</td>\n",
       "      <td>9.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RMSE</th>\n",
       "      <td>49.86</td>\n",
       "      <td>52.22</td>\n",
       "      <td>51.35</td>\n",
       "      <td>52.37</td>\n",
       "      <td>50.77</td>\n",
       "      <td>11.78</td>\n",
       "      <td>9.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>MAE</th>\n",
       "      <td>45.60</td>\n",
       "      <td>51.54</td>\n",
       "      <td>49.40</td>\n",
       "      <td>50.41</td>\n",
       "      <td>50.84</td>\n",
       "      <td>10.37</td>\n",
       "      <td>9.09</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                              Proposed Method vs.LR  \\\n",
       "Percentage Improvement university laboratory                          \n",
       "MAPE(%)                                                       45.54   \n",
       "RMSE                                                          49.86   \n",
       "MAE                                                           45.60   \n",
       "\n",
       "                                              Proposed Method vs.SVR  \\\n",
       "Percentage Improvement university laboratory                           \n",
       "MAPE(%)                                                        50.30   \n",
       "RMSE                                                           52.22   \n",
       "MAE                                                            51.54   \n",
       "\n",
       "                                               Proposed Method vs.ANN  \\\n",
       "Percentage Improvement university laboratory                            \n",
       "MAPE(%)                                                         47.99   \n",
       "RMSE                                                            51.35   \n",
       "MAE                                                             49.40   \n",
       "\n",
       "                                              Proposed Method vs.RF  \\\n",
       "Percentage Improvement university laboratory                          \n",
       "MAPE(%)                                                       49.14   \n",
       "RMSE                                                          52.37   \n",
       "MAE                                                           50.41   \n",
       "\n",
       "                                              Proposed Method vs.LSTM  \\\n",
       "Percentage Improvement university laboratory                            \n",
       "MAPE(%)                                                         50.03   \n",
       "RMSE                                                            50.77   \n",
       "MAE                                                             50.84   \n",
       "\n",
       "                                              Proposed Method vs.CEEMDAN RF  \\\n",
       "Percentage Improvement university laboratory                                  \n",
       "MAPE(%)                                                               10.54   \n",
       "RMSE                                                                  11.78   \n",
       "MAE                                                                   10.37   \n",
       "\n",
       "                                              Proposed Method vs. CEEMDAN LSTM  \n",
       "Percentage Improvement university laboratory                                    \n",
       "MAPE(%)                                                                   9.08  \n",
       "RMSE                                                                      9.49  \n",
       "MAE                                                                       9.09  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pMAPE_LR_vs_Proposed_univlab=((lr_univlab[0]-proposed_method_univlab[0])/lr_univlab[0])*100\n",
    "pRMSE_LR_vs_Proposed_univlab=((lr_univlab[1]-proposed_method_univlab[1])/lr_univlab[1])*100\n",
    "pMAE_LR_vs_Proposed_univlab=((lr_univlab[2]-proposed_method_univlab[2])/lr_univlab[2])*100\n",
    "\n",
    "pMAPE_SVR_vs_Proposed_univlab=((svr_univlab[0]-proposed_method_univlab[0])/svr_univlab[0])*100\n",
    "pRMSE_SVR_vs_Proposed_univlab=((svr_univlab[1]-proposed_method_univlab[1])/svr_univlab[1])*100\n",
    "pMAE_SVR_vs_Proposed_univlab=((svr_univlab[2]-proposed_method_univlab[2])/svr_univlab[2])*100\n",
    "\n",
    "pMAPE_ANN_vs_Proposed_univlab=((ann_univlab[0]-proposed_method_univlab[0])/ann_univlab[0])*100\n",
    "pRMSE_ANN_vs_Proposed_univlab=((ann_univlab[1]-proposed_method_univlab[1])/ann_univlab[1])*100\n",
    "pMAE_ANN_vs_Proposed_univlab=((ann_univlab[2]-proposed_method_univlab[2])/ann_univlab[2])*100\n",
    "\n",
    "pMAPE_RF_vs_Proposed_univlab=((rf_univlab[0]-proposed_method_univlab[0])/rf_univlab[0])*100\n",
    "pRMSE_RF_vs_Proposed_univlab=((rf_univlab[1]-proposed_method_univlab[1])/rf_univlab[1])*100\n",
    "pMAE_RF_vs_Proposed_univlab=((rf_univlab[2]-proposed_method_univlab[2])/rf_univlab[2])*100\n",
    "\n",
    "pMAPE_LSTM_vs_Proposed_univlab=((lstm_univlab[0]-proposed_method_univlab[0])/lstm_univlab[0])*100\n",
    "pRMSE_LSTM_vs_Proposed_univlab=((lstm_univlab[1]-proposed_method_univlab[1])/lstm_univlab[1])*100\n",
    "pMAE_LSTM_vs_Proposed_univlab=((lstm_univlab[2]-proposed_method_univlab[2])/lstm_univlab[2])*100\n",
    "\n",
    "pMAPE_ceemdan_rf_vs_Proposed_univlab=((ceemdan_rf_univlab[0]-proposed_method_univlab[0])/ceemdan_rf_univlab[0])*100\n",
    "pRMSE_ceemdan_rf_vs_Proposed_univlab=((ceemdan_rf_univlab[1]-proposed_method_univlab[1])/ceemdan_rf_univlab[1])*100\n",
    "pMAE_ceemdan_rf_vs_Proposed_univlab=((ceemdan_rf_univlab[2]-proposed_method_univlab[2])/ceemdan_rf_univlab[2])*100\n",
    "\n",
    "\n",
    "pMAPE_ceemdan_lstm_vs_Proposed_univlab=((ceemdan_lstm_univlab[0]-proposed_method_univlab[0])/ceemdan_lstm_univlab[0])*100\n",
    "pRMSE_ceemdan_lstm_vs_Proposed_univlab=((ceemdan_lstm_univlab[1]-proposed_method_univlab[1])/ceemdan_lstm_univlab[1])*100\n",
    "pMAE_ceemdan_lstm_vs_Proposed_univlab=((ceemdan_lstm_univlab[2]-proposed_method_univlab[2])/ceemdan_lstm_univlab[2])*100\n",
    "\n",
    "\n",
    "df_PI_univlab=[[pMAPE_LR_vs_Proposed_univlab,pMAPE_SVR_vs_Proposed_univlab,pMAPE_ANN_vs_Proposed_univlab,\n",
    "                pMAPE_RF_vs_Proposed_univlab,pMAPE_LSTM_vs_Proposed_univlab,pMAPE_ceemdan_rf_vs_Proposed_univlab,\n",
    "                pMAPE_ceemdan_lstm_vs_Proposed_univlab],\n",
    "                [pRMSE_LR_vs_Proposed_univlab,pRMSE_SVR_vs_Proposed_univlab,pRMSE_ANN_vs_Proposed_univlab,\n",
    "                pRMSE_RF_vs_Proposed_univlab,pRMSE_LSTM_vs_Proposed_univlab,pRMSE_ceemdan_rf_vs_Proposed_univlab,\n",
    "                pRMSE_ceemdan_lstm_vs_Proposed_univlab],\n",
    "                [pMAE_LR_vs_Proposed_univlab,pMAE_SVR_vs_Proposed_univlab,pMAE_ANN_vs_Proposed_univlab,\n",
    "                pMAE_RF_vs_Proposed_univlab,pMAE_LSTM_vs_Proposed_univlab,pMAE_ceemdan_rf_vs_Proposed_univlab,\n",
    "                pMAE_ceemdan_lstm_vs_Proposed_univlab]]\n",
    "\n",
    "PI_univlab=pd.DataFrame(df_PI_univlab, columns=[\"Proposed Method vs.LR\", \"Proposed Method vs.SVR\",\" Proposed Method vs.ANN\",\n",
    "                                      \"Proposed Method vs.RF\",\"Proposed Method vs.LSTM\",\"Proposed Method vs.CEEMDAN RF\",\n",
    "                                      \"Proposed Method vs. CEEMDAN LSTM\"])\n",
    "PI_univlab= PI_univlab.round(decimals = 2)\n",
    "PI_univlab.set_axis(['MAPE(%)', 'RMSE','MAE'], axis='index')\n",
    "PI_univlab.style.set_caption(\"Percentage Improvement-University Laboratory Building\")\n",
    "index = PI_univlab.index\n",
    "index.name = \"Percentage Improvement university laboratory\"\n",
    "PI_univlab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#export table to png\n",
    "#dfi.export(PI_univlab,\"PI_univlab_table.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
